"""
工具模块包
提供各种工具函数和类
"""

import os
from typing import Dict, Any

from .i18n import init_i18n, get_text, set_language, get_languages, get_current_language
from .config import init_config, get_config, set_config, save_config, reset_config, update_config
from .file_handler import init_file_handler, read_file, check_file, get_supported_formats, get_max_file_size
from .summarizer import init_summarizer, summarize, extract_keywords
from .history import init_history, add_record, get_record, get_all_records, delete_record, clear_history, search_history

def init_utils(base_dir: str = None) -> Dict[str, Any]:
    """
    初始化所有工具模块
    
    Args:
        base_dir: 基础目录路径，如果为None则使用当前目录
        
    Returns:
        Dict[str, Any]: 初始化结果
    """
    if base_dir is None:
        base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    
    # 确保目录存在
    os.makedirs(os.path.join(base_dir, "data"), exist_ok=True)
    
    # 初始化配置
    config_file = os.path.join(base_dir, "data", "config.json")
    default_config_file = os.path.join(base_dir, "data", "default_config.json")
    config = init_config(config_file, default_config_file)
    
    # 初始化语言
    lang_dir = os.path.join(base_dir, "languages")
    default_lang = get_config("语言", "zh")
    i18n = init_i18n(lang_dir, default_lang)
    
    # 初始化文件处理器
    file_handler = init_file_handler()
    
    # 初始化摘要生成器
    summarizer = init_summarizer()
    
    # 初始化历史记录
    history_file = os.path.join(base_dir, "data", "history.json")
    history = init_history(history_file)
    
    return {
        "config": config,
        "i18n": i18n,
        "file_handler": file_handler,
        "summarizer": summarizer,
        "history": history
    }

# 导出所有需要的函数和类
__all__ = [
    # 初始化函数
    'init_utils',
    
    # i18n 函数
    'get_text', 'set_language', 'get_languages', 'get_current_language',
    
    # 配置函数
    'get_config', 'set_config', 'save_config', 'reset_config', 'update_config',
    
    # 文件处理函数
    'read_file', 'check_file', 'get_supported_formats', 'get_max_file_size',
    
    # 摘要函数
    'summarize', 'extract_keywords',
    
    # 历史记录函数
    'add_record', 'get_record', 'get_all_records', 'delete_record', 'clear_history', 'search_history'
]